這兩天來看看 function programing 的哪些概念可以幫助我們寫出 clean code 吧 !
MDN定義
指的是 可以將 function 作為參數、或者返回一個 function 作為結果的 function。
function firstClassFunction(fn, data) {
return fn(data);
}
備註: 當一個函式可以回傳一個函式時,稱之為高階函式 (Higher-Order Function )。
推薦他的理由
宣告式函式只需要我們告訴他需要「什麼」,由他來決定該「如何」實現 (What to do),主要著重在結果,通過宣告式函式 ,可以讓你的程式碼更簡潔好懂,而且不容易出現 side effect。
而命令式涵式 ( Imperative ) 會更著重在過程 (How to do)
舉例來說
// Imperative (How to do)
const doubleMap = numbers => {
const doubled = [];
for (let i = 0; i < numbers.length; i++) {
doubled.push(numbers[i] * 2);
}
return doubled;
};
console.log(doubleMap([2, 3, 4])); // [4, 6, 8]
// Declarative (What to do)
const doubleMap = numbers => numbers.map(n => n * 2);
console.log(doubleMap([2, 3, 4])); // [4, 6, 8]
利用 Declarative 整個程式碼是不是變得比較好讀拉~